package com.sai.jsai.module.system.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sai.jsai.common.base.vo.PageResult;
import com.sai.jsai.common.starter.mybatisplus.component.QueryGenerator;
import com.sai.jsai.common.starter.mybatisplus.service.impl.BaseServiceImpl;
import com.sai.jsai.module.system.api.dto.SysRoleDTO;
import com.sai.jsai.module.system.controller.vo.SysRoleCreateReqVO;
import com.sai.jsai.module.system.controller.vo.SysRolePageReqVO;
import com.sai.jsai.module.system.convert.SysRoleConvert;
import com.sai.jsai.module.system.dal.entity.SysRole;
import com.sai.jsai.module.system.dal.mapper.SysRoleMapper;
import com.sai.jsai.module.system.service.SysRoleService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author jisai
 * @version 0.0.1
 * @Description 系统角色服务实现类
 * @createTime 2024/09/24
 */
@Service
public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {

    /**
     * 按角色ID列表获取角色列表
     *
     * @param sysRoleIds 角色ID列表
     * @return 角色列表
     */
    @Override
    public List<SysRoleDTO> listByIds(List<Long> sysRoleIds) {
        List<SysRole> sysRoles = this.baseMapper.selectBatchIds(sysRoleIds);
        return SysRoleConvert.INSTANCE.convertToDTOList(sysRoles);
    }

    /**
     * 创建角色
     *
     * @param createReqVO 创建角色参数
     * @return 创建后角色信息
     */
    @Override
    public SysRole create(SysRoleCreateReqVO createReqVO) {
        SysRole sysRole = SysRoleConvert.INSTANCE.convertToEntity(createReqVO);
        this.save(sysRole);
        return sysRole;
    }

    /**
     * 分页查询角色列表
     *
     * @param pageReqVO 分页参数
     * @return 角色列表
     */
    @Override
    public PageResult<SysRole> page(SysRolePageReqVO pageReqVO) {
        QueryWrapper<SysRole> qw =  QueryGenerator.initQueryWrapper(pageReqVO);
        return this.baseMapper.selectPage(pageReqVO, qw);
    }


}
